1
HIP 生態系統的架構基礎
AI022Lesson 3
00:00

這個 HIP 生態系統 被設計為一個輕量級抽象層,旨在實現 AMD 與 NVIDIA 架構之間的原始碼相容性。它利用了 ROCm(Radeon 開源運算) 堆疊,特別是使用了 異質化系統架構(HSA) 執行時環境以及 核心融合驅動程式(KFD)

1. 初始化啟動

初始化過程從透過 hsa_init(0, ...)hsaKmtOpenKFD(...)這兩個建立呼叫來建立使用者空間應用程式與 AMD GPU 硬體之間的通訊橋樑。

2. 拓撲結構與功能探測

在執行核心之前,執行時環境會使用 hsaKmtAcquireSystemPropertieshsaKmtGetNodeProperties來識別硬體功能。它使用 hsaKmtMapMemoryToGPUNodes將物理記憶體對應至 GPU 節點,以確保裝置能看見頁面表。

3. 編譯流程

CUDA 與 HIP 之間的橋樑由兩大支柱構成: hipify-perl (基於正規表示式的轉譯器)以及 hipcc (編譯器封裝工具)。

# 迁移工作流程範例
hipify-perl square.cu > square.cpp
hipcc square.cpp -o square.out

4. 版本控制邏輯

相容性透過精確的公式來強制執行,以確保 hipRuntimeGetVersion 與 HSA 延伸表格一致:

$$\text{HIP\_VERSION} = \text{MAJOR} \times 10^7 + \text{MINOR} \times 10^5 + \text{PATCH}$$

應用層(./square.out)HIP 層(hipcc / 執行時 API)HSA 執行時 / 延伸表格核心驅動程式(KFD)與硬體
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>